package com.quanyan.pay.api.alipay.vo;

import com.quanyan.pay.entity.AlipayConfigAccount;
import com.quanyan.pay.vo.AliBaseReqVo;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;

/**
 * Created by Zheng.Ke
 * Date 2017/3/18.
 * 具体参见文档 https://doc.open.alipay.com/doc2/apiDetail.htm?spm=a219a.7629065.0.0.PlTwKb&apiId=850&docType=4
 */
public class AliTradePayReqVo extends AliBaseReqVo {
    /** 商户网站唯一订单号 */
    @NotNull
    private String out_trade_no;
    /** 支付场景 */
    private String scene = "bar_code";
    /** 支付授权码 */
    @NotNull
    private String auth_code;
    /** 销售产品码 */
    private String product_code = "FACE_TO_FACE_PAYMENT";
    /** 订单标题(展示给用户看的) */
    @NotNull
    private String subject;
    /** 买家的支付宝用户id */
    private String buyer_id;
    /** 卖家的支付宝用户id */
    private String seller_id;
    /** 订单总金额(单位为元,精确到小数点后两位) */
    @NotNull
    private BigDecimal total_amount;
    /** 参与优惠计算的金额（单位为元） */
    private BigDecimal discountable_amount;
    /** 不参与优惠计算的金额（单位为元） */
    private BigDecimal undiscountable_amount;
    /** 对一笔交易的具体描述信息 */
    private String body;
    /** 商品列表 */
    private List<AliGoodsDetail> goods_detail;
    /** 商户操作员编号 */
    private String operator_id;
    /** 商户门店编号 */
    private String store_id;
    /** 商户机具终端编号 */
    private String terminal_id;
    /** 支付宝的店铺编号 */
    private String alipay_store_id;
    /** 商品列表 */
    private List<AliExtendParams> extend_params;
    /** 该笔订单允许的最晚付款时间 */
    private String timeout_express;
    /** 预授权号 */
    private String auth_no;

    public AliTradePayReqVo(AlipayConfigAccount alipayConfigAccount) {
        super(alipayConfigAccount);
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getScene() {
        return scene;
    }

    public void setScene(String scene) {
        this.scene = scene;
    }

    public String getAuth_code() {
        return auth_code;
    }

    public void setAuth_code(String auth_code) {
        this.auth_code = auth_code;
    }

    public String getProduct_code() {
        return product_code;
    }

    public void setProduct_code(String product_code) {
        this.product_code = product_code;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getBuyer_id() {
        return buyer_id;
    }

    public void setBuyer_id(String buyer_id) {
        this.buyer_id = buyer_id;
    }

    public String getSeller_id() {
        return seller_id;
    }

    public void setSeller_id(String seller_id) {
        this.seller_id = seller_id;
    }

    public BigDecimal getTotal_amount() {
        return total_amount;
    }

    public void setTotal_amount(BigDecimal total_amount) {
        this.total_amount = total_amount;
    }

    public BigDecimal getDiscountable_amount() {
        return discountable_amount;
    }

    public void setDiscountable_amount(BigDecimal discountable_amount) {
        this.discountable_amount = discountable_amount;
    }

    public BigDecimal getUndiscountable_amount() {
        return undiscountable_amount;
    }

    public void setUndiscountable_amount(BigDecimal undiscountable_amount) {
        this.undiscountable_amount = undiscountable_amount;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public List<AliGoodsDetail> getGoods_detail() {
        return goods_detail;
    }

    public void setGoods_detail(List<AliGoodsDetail> goods_detail) {
        this.goods_detail = goods_detail;
    }

    public String getOperator_id() {
        return operator_id;
    }

    public void setOperator_id(String operator_id) {
        this.operator_id = operator_id;
    }

    public String getStore_id() {
        return store_id;
    }

    public void setStore_id(String store_id) {
        this.store_id = store_id;
    }

    public String getTerminal_id() {
        return terminal_id;
    }

    public void setTerminal_id(String terminal_id) {
        this.terminal_id = terminal_id;
    }

    public String getAlipay_store_id() {
        return alipay_store_id;
    }

    public void setAlipay_store_id(String alipay_store_id) {
        this.alipay_store_id = alipay_store_id;
    }

    public List<AliExtendParams> getExtend_params() {
        return extend_params;
    }

    public void setExtend_params(List<AliExtendParams> extend_params) {
        this.extend_params = extend_params;
    }

    public String getTimeout_express() {
        return timeout_express;
    }

    public void setTimeout_express(String timeout_express) {
        this.timeout_express = timeout_express;
    }

    public String getAuth_no() {
        return auth_no;
    }

    public void setAuth_no(String auth_no) {
        this.auth_no = auth_no;
    }
}
